Specs for GrowlAgent

base of tree 11 years ago
parent
commit
bd206d00cf
2 changed files with 51 additions and 1 deletions
  1. 1 1
      app/models/agents/growl_agent.rb
  2. 50 0
      spec/models/agents/growl_agent_spec.rb

+ 1 - 1
app/models/agents/growl_agent.rb

@@ -49,7 +49,7 @@ module Agents
49 49
         register_growl
50 50
         message = (event.payload['message'] || event.payload['text']).to_s
51 51
         subject = event.payload['subject'].to_s
52
-        if message != "" && subject != ""
52
+        if message.present? && subject.present?
53 53
           log "Sending Growl notification '#{subject}': '#{message}' to #{options['growlserver']} with event #{event.id}"
54 54
           notify_growl(subject,message)
55 55
         else

+ 50 - 0
spec/models/agents/growl_agent_spec.rb

@@ -0,0 +1,50 @@
1
+require 'spec_helper'
2
+
3
+describe Agents::GrowlAgent do
4
+  before do
5
+    @checker = Agents::GrowlAgent.new(:name => 'a growl agent',
6
+                                      :options => { :growlserver => 'localhost',
7
+                                                    :growlappname => 'HuginnGrowlApp',
8
+                                                    :growlnotificationname => 'Notification',
9
+                                                    :expected_receive_period_in_days => '1' })
10
+    @checker.user = users(:bob)
11
+    @checker.save!
12
+    
13
+    class Agents::GrowlAgent #this should really be done with RSpec-Mocks
14
+      def notify_growl(message,subject)
15
+      end
16
+    end
17
+
18
+    @event = Event.new
19
+    @event.agent = agents(:bob_weather_agent)
20
+    @event.payload = { :subject => 'Weather Alert!', :message => 'Looks like its going to rain' }
21
+    @event.save!
22
+  end
23
+
24
+  describe "#working?" do
25
+    it "checks if events have been received within the expected receive period" do
26
+      @checker.should_not be_working # No events received
27
+      Agents::GrowlAgent.async_receive @checker.id, [@event.id]
28
+      @checker.reload.should be_working # Just received events
29
+      two_days_from_now = 2.days.from_now
30
+      stub(Time).now { two_days_from_now }
31
+      @checker.reload.should_not be_working # More time has passed than the expected receive period without any new events
32
+    end
33
+  end
34
+
35
+  describe "validation" do
36
+    before do
37
+      @checker.should be_valid
38
+    end
39
+
40
+    it "should validate presence of of growlserver" do
41
+      @checker.options[:growlserver] = ""
42
+      @checker.should_not be_valid
43
+    end
44
+
45
+    it "should validate presence of expected_receive_period_in_days" do
46
+      @checker.options[:expected_receive_period_in_days] = ""
47
+      @checker.should_not be_valid
48
+    end
49
+  end
50
+end